home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / uucp-doc.lha / uucp-doc-1.04 / uucp.info-1 (.txt) < prev    next >
GNU Info File  |  1993-02-14  |  49KB  |  825 lines

  1. This is Info file uucp.info, produced by Makeinfo-1.49 from the input
  2. file uucp.texi.
  3.    This file documents Taylor UUCP, version 1.04.
  4.    Copyright (C) 1992, 1993 Ian Lance Taylor
  5.    Permission is granted to make and distribute verbatim copies of this
  6. manual provided the copyright notice and this permission notice are
  7. preserved on all copies.
  8.    Permission is granted to copy and distribute modified versions of
  9. this manual under the conditions for verbatim copying, provided also
  10. that the section entitled "Copying" are included exactly as in the
  11. original, and provided that the entire resulting derived work is
  12. distributed under the terms of a permission notice identical to this
  13.    Permission is granted to copy and distribute translations of this
  14. manual into another language, under the above conditions for modified
  15. versions, except that the section entitled "Copying" may be included in
  16. a translation approved by the author instead of in the original English.
  17. File: uucp.info,  Node: Top,  Next: Copying,  Prev: (dir),  Up: (dir)
  18. Taylor UUCP 1.04
  19. ****************
  20.    This is the documentation for the Taylor UUCP package, version 1.04.
  21. The programs were written by Ian Lance Taylor.  The author can be
  22. reached at `<ian@airs.com>', or `c/o Cygnus Support, 4th Floor,
  23. Building 200, 1 Kendall Square, Cambridge, MA, 02139'.
  24.    There is a mailing list for discussion of the package.  To join (or
  25. get off) the list, send mail to `<taylor-uucp-request@gnu.ai.mit.edu>'.
  26.  Mail to this address is answered by a person, not a program.  When
  27. joining the list, please give the address at which you wish to receive
  28. mail; do not rely on the message headers.  To send a message to the
  29. list, send it to `<taylor-uucp@gnu.ai.mit.edu>'.
  30. * Menu:
  31. * Copying::                     Taylor UUCP copying conditions
  32. * Introduction::                Introduction to Taylor UUCP
  33. * Overall Installation::        Taylor UUCP installation
  34. * Configuration Files::         Taylor UUCP configuration files
  35. * Protocols::                   UUCP protocol internals
  36. * Hacking::                     Hacking Taylor UUCP
  37. * Acknowledgements::            Acknowledgements
  38. * Index (concepts)::            Concept index
  39. * Index (configuration file)::  Index to new configuration files
  40.  -- The Detailed Node Listing --
  41. Taylor UUCP Overall Installation
  42. * Configuration::               Configuring Taylor UUCP
  43. * Compilation::                 Compiling Taylor UUCP
  44. * Testing::                     Testing Taylor UUCP
  45. * Installation::                Installing Taylor UUCP
  46. * TCP::                         TCP together with Taylor UUCP
  47. Installing Taylor UUCP
  48. * Running uucico::              Running uucico
  49. * Using UUCP for mail and news::  Using UUCP for mail and news.
  50. * Trimming UUCP Log Files::     Trimming UUCP Log Files
  51. Using UUCP for mail and news.
  52. * Sending mail or news::        Sending mail or news via UUCP
  53. * Receiving mail or news::      Receiving mail or news via UUCP
  54. Taylor UUCP Configuration Files
  55. * Configuration File Format::   Configuration file format
  56. * Configuration Examples::      Examples of configuration files
  57. * Time Strings::                How to write time strings
  58. * Chat Scripts::                How to write chat scripts
  59. * config File::                 The main configuration file
  60. * sys File::                    The system configuration file
  61. * port File::                   The port configuration files
  62. * dial File::                   The dialer configuration files
  63. * Security::                    Security issues
  64. Examples of Configuration Files
  65. * config File Examples::        Examples of the main configuration file
  66. * Leaf Example::                Call a single remote site
  67. * Gateway Example::             The gateway for several local systems
  68. The Main Configuration File
  69. * Miscellaneous (config)::      Miscellaneous config file commands
  70. * Configuration File Names::    Using different configuration files
  71. * Log File Names::              Using different log files
  72. * Debugging Levels::            Debugging levels
  73. The System Configuration File
  74. * Defaults and Alternates::     Using defaults and alternates
  75. * Naming the System::           Naming the system
  76. * Calling Out::                 Calling out
  77. * Accepting a Call::            Accepting a call
  78. * Protocol Selection::          Protocol selection
  79. * File Transfer Control::       File transfer control
  80. * Miscellaneous (sys)::         Miscellaneous sys file commands
  81. * Default sys File Values::     Default values
  82. Calling Out
  83. * When to Call::                When to call
  84. * Placing the Call::            Placing the call
  85. * Logging In::                  Logging in
  86. UUCP protocol internals
  87. * Grades::                      UUCP grades
  88. * Lock Files::                  UUCP lock file format
  89. * UUCP Protocol::               The common UUCP protocol
  90. * g Protocol::                  The UUCP `g' protocol
  91. * f Protocol::                  The UUCP `f' protocol
  92. * t Protocol::                  The UUCP `t' protocol
  93. * e Protocol::                  The UUCP `e' protocol
  94. * x Protocol::                  The UUCP `x' protocol
  95. * d Protocol::                  The UUCP `d' protocol
  96. * Capital G Protocol::          The UUCP `G' protocol
  97. * Documentation References::    Documentation references
  98. The Common UUCP Protocol
  99. * Initial Handshake::           Initial handshake
  100. * File Requests::               File requests
  101. * Final Handshake::             Final handshake
  102. File Requests
  103. * S Request::                   S request
  104. * R Request::                   R request
  105. * X Request::                   X request
  106. * H Request::                   H request
  107. Hacking Taylor UUCP
  108. * System Dependence::           System Dependence
  109. * Naming Conventions::          Naming Conventions
  110. * Patches::                     Patches
  111. File: uucp.info,  Node: Copying,  Next: Introduction,  Prev: Top,  Up: Top
  112. Taylor UUCP Copying Conditions
  113. ******************************
  114.    This package is covered by the GNU Public License.  See the file
  115. `COPYING' for details.  If you would like to do something with this
  116. package that you feel is reasonable, but you feel is prohibited by the
  117. license, contact me to see if we can work it out.
  118.    Here is some propaganda from the Free Software Foundation.  If you
  119. find this stuff offensive or annoying, remember that you probably did
  120. not spend any money to get this code.  I did not write this code to make
  121. life easier for developers of UUCP packages, I wrote it to help end
  122. users, and I believe that these are the most appropriate conditions for
  123. distribution.
  124.    All the programs, scripts and documents relating to Taylor UUCP are
  125. "free"; this means that everyone is free to use them and free to
  126. redistribute them on a free basis.  The Taylor UUCP-related programs are
  127. not in the public domain; they are copyrighted and there are
  128. restrictions on their distribution, but these restrictions are designed
  129. to permit everything that a good cooperating citizen would want to do.
  130. What is not allowed is to try to prevent others from further sharing any
  131. version of these programs that they might get from you.
  132.    Specifically, we want to make sure that you have the right to give
  133. away copies of the programs that relate to Taylor UUCP, that you receive
  134. source code or else can get it if you want it, that you can change these
  135. programs or use pieces of them in new free programs, and that you know
  136. you can do these things.
  137.    To make sure that everyone has such rights, we have to forbid you to
  138. deprive anyone else of these rights.  For example, if you distribute
  139. copies of the Taylor UUCP related programs, you must give the recipients
  140. all the rights that you have.  You must make sure that they, too,
  141. receive or can get the source code.  And you must tell them their
  142. rights.
  143.    Also, for our own protection, we must make certain that everyone
  144. finds out that there is no warranty for the programs that relate to
  145. Taylor UUCP.  If these programs are modified by someone else and passed
  146. on, we want their recipients to know that what they have is not what we
  147. distributed, so that any problems introduced by others will not reflect
  148. on our reputation.
  149.    The precise conditions of the licenses for the programs currently
  150. being distributed that relate to Taylor UUCP are found in the General
  151. Public Licenses that accompany them.
  152. File: uucp.info,  Node: Introduction,  Next: Overall Installation,  Prev: Copying,  Up: Top
  153. Introduction to Taylor UUCP
  154. ***************************
  155.    General introductions to UUCP are available, and perhaps one day I
  156. will write one.  In the meantime, here is a very brief one that
  157. concentrates on the programs provided by Taylor UUCP.
  158.    Taylor UUCP is a complete UUCP package.  It is covered by the GNU
  159. Public License, which means that the source code is always available. 
  160. It is composed of several programs; most of the names of these programs
  161. are based on earlier UUCP packages.
  162. `uucp'
  163.      The `uucp' program is used to copy file between systems.  It is
  164.      similar to the standard Unix `cp' program, except that you can
  165.      refer to a file on a remote system by using `system!' before the
  166.      file name.  For example, to copy the file `notes.txt' to the system
  167.      `airs', you would say `uucp notes.txt airs!~/notes.txt'.  In this
  168.      example `~' is used to name the UUCP public directory on `airs'.
  169. `uux'
  170.      The `uux' program is used to request a program to be executed on a
  171.      remote system.  This is how mail and news are transferred over
  172.      UUCP.  As with `uucp', programs and files on remote systems may be
  173.      named by using `system!'.  For example, to run the `rnews' program
  174.      on `airs' passing it standard input, you would say `uux -
  175.      airs!rnews'.  The `-' means to read standard input and set things
  176.      up such that when `rnews' runs on `airs' it will receive the same
  177.      standard input.
  178.    Neither `uucp' nor `uux' actually do any work immediately. Instead,
  179. they queue up requests for later processing.  They then start a daemon
  180. process which processes the requests and calls up the appropriate
  181. systems.  Normally the system will also start the daemon periodically to
  182. check if there is any work to be done.  The advantage of this approach
  183. is that it all happens automatically.  You don't have to sit around
  184. waiting for the files to be transferred.  The disadvantage is that if
  185. anything goes wrong it might be a while before anybody notices.
  186. `uustat'
  187.      The `uustat' program does many things.  By default it will simply
  188.      list all the jobs you have queued with `uucp' or `uux' that have
  189.      not yet been processed.  You can use `uustat' to remove any of
  190.      your jobs from the queue.  You can also it use it to show the
  191.      status of the UUCP system in various ways, such as showing the
  192.      connection status of all the remote systems your system knows
  193.      about.  The system administrator can use `uustat' to automatically
  194.      discard old jobs while sending mail to the user who requested them.
  195. `uuname'
  196.      The `uuname' program by default lists all the remote systems your
  197.      system knows about.  You can also use it to get the name of your
  198.      local system.  It is mostly useful for shell scripts.
  199. `uulog'
  200.      The `uulog' program can be used to display entries in the UUCP log
  201.      file.  It can select the entries for a particular system or a
  202.      particular user.  You can use it to see what has happened to your
  203.      queued jobs in the past.
  204. `uuto'
  205. `uupick'
  206.      `uuto' is a simple shell script interface to `uucp'.  It will
  207.      transfer a file, or the contents of a directory, to a remote
  208.      system, and notify a particular user on the remote system when it
  209.      arrives.  The remote user can then retrieve the file(s) with
  210.      `uupick'.
  211.      The `cu' program can be used to call up another system and
  212.      communicate with it as though you were directly connected.  It can
  213.      also do simple file transfers, though it does not provide any
  214.      error checking.
  215.    These eight programs just described, `uucp', `uux', `uuto',
  216. `uupick', `uustat', `uuname', `uulog', and `cu' are the user programs
  217. provided by Taylor UUCP. `uucp', `uux', and `uuto' add requests to the
  218. work queue, `uupick' extracts files from the UUCP public directory,
  219. `uustat' examines the work queue, `uuname' examines the configuration
  220. files, `uulog' examines the log files, and `cu' just uses the UUCP
  221. configuration files.
  222.    The real work is actually done by two daemon processes, which are
  223. normally run automatically rather than by a user.
  224. `uucico'
  225.      The `uucico' daemon is the program which actually calls the remote
  226.      system and transfers files and requests.  `uucico' is normally
  227.      started automatically by `uucp' and `uux'.  Most systems will also
  228.      start it periodically to make sure that all work requests are
  229.      handled.  `uucico' checks the queue to see what work needs to be
  230.      done, and then calls the appropriate systems.  If the call fails,
  231.      perhaps because the phone line is busy, `uucico' leaves the
  232.      requests in the queue and goes on to the next system to call.  It
  233.      is also possible to force `uucico' to call a remote system even if
  234.      there is no work to be done for it, so that it can pick up any
  235.      work that may be queued up remotely.
  236. `uuxqt'
  237.      The `uuxqt' daemon processes execution requests made by the `uux'
  238.      program on remote systems.  It also processes requests made on the
  239.      local system which require files from a remote system.  It is
  240.      normally started by `uucico'.
  241.    Suppose you, on the system `bantam', want to copy a file to the
  242. system `airs'.  You would run the `uucp' command locally, with a
  243. command like `uucp notes.txt airs!~/notes.txt'.  This would queue up a
  244. request on `bantam' for `airs', and would then start the `uucico'
  245. daemon.  `uucico' would see that there was a request for `airs' and
  246. attempt to call it.  When the call succeeded, another copy of `uucico'
  247. would be started on `airs'.  The two copies of `uucico' would tell each
  248. other what they had to do and transfer the file from `bantam' to
  249. `airs'.  When the file transfer was complete the `uucico' on `airs'
  250. would move it into the UUCP public directory.
  251.    UUCP is often used to transfer mail.  This is normally done
  252. automatically by mailer programs.  When `bantam' has a mail message to
  253. send to `ian' at `airs', it executes `uux - airs!rmail ian' and writes
  254. the mail message to the `uux' process as standard input.  The `uux'
  255. program, running on `bantam', will read the standard input and store
  256. it, as well as the `rmail' request itself, on the work queue for
  257. `airs'.  `uux' will then start the `uucico' daemon.  The `uucico'
  258. daemon will call up `airs', just as in the `uucp' example, and transfer
  259. the work request and the mail message.  The `uucico' daemon on `airs'
  260. will put the files on a local work queue.  When the communication
  261. session is over, the `uucico' daemon on `airs' will start the `uuxqt'
  262. daemon.  `uuxqt' will see the request to run, and will run `rmail ian'
  263. with the mail message as standard input.  The `rmail' program, which is
  264. not part of the UUCP package, is then responsible for either putting
  265. the message in the right mailbox on `airs' or forwarding the message on
  266. to another system.
  267.    Taylor UUCP comes with a few other programs that are useful when
  268. installing and configuring UUCP.
  269. `uuchk'
  270.      The `uuchk' program reads the UUCP configuration files and displays
  271.      a rather lengthy description of what it finds.  This is useful when
  272.      configuring UUCP to make certain that the UUCP package will do
  273.      what you expect it to do.
  274. `uuconv'
  275.      The `uuconv' program can be used to convert UUCP configuration
  276.      files from one support format to another.  This can be useful for
  277.      administrators converting from an older UUCP.  Taylor UUCP is able
  278.      to read and use old configuration file formats, but some new
  279.      features can not be selected using the old formats.
  280. `uusched'
  281.      The `uusched' script is just provided for compatibility with older
  282.      UUCP releases.  It starts `uucico' to call, one at a time, all the
  283.      systems for which work has been queued.
  284. `tstuu'
  285.      The `tstuu' program is a test harness for the UUCP package, which
  286.      will help ensure that it has been configured and compiled
  287.      correctly.  It does not test everything, however.  It only runs on
  288.      Unix systems which support Berkeley style pseudo-terminals or
  289.      STREAMS style pseudo-terminals.  It can be useful when initially
  290.      installing Taylor UUCP.
  291. File: uucp.info,  Node: Overall Installation,  Next: Configuration Files,  Prev: Introduction,  Up: Top
  292. Taylor UUCP Overall Installation
  293. ********************************
  294.    These are the installation instructions for the Taylor UUCP package.
  295. * Menu:
  296. * Configuration::               Configuring Taylor UUCP
  297. * Compilation::                 Compiling Taylor UUCP
  298. * Testing::                     Testing Taylor UUCP
  299. * Installation::                Installing Taylor UUCP
  300. * TCP::                         TCP together with Taylor UUCP
  301. File: uucp.info,  Node: Configuration,  Next: Compilation,  Prev: Overall Installation,  Up: Overall Installation
  302. Configuring Taylor UUCP
  303. =======================
  304.    You will have to decide what types of configuration files you want to
  305. use.  This package supports a new sort of configuration file; see *Note
  306. Configuration Files::.  It also supports V2 configuration files
  307. (`L.sys', `L-devices', etc.) and HDB configuration files (`Systems',
  308. `Devices', etc.).  No documentation is provided for V2 or HDB
  309. configuration files.  All types of configuration files can be used at
  310. once, if you are so inclined.  Currently using just V2 configuration
  311. files is not really possible, because there is no way to specify a
  312. dialer (there are no built in dialers, and the program does not know
  313. how to read `acucap' or `modemcap'); however, V2 configuration files
  314. can be used with a new style dialer file (*note dial File::.), or with
  315. a HDB `Dialers' file.
  316.    Use of HDB configuration files has two known bugs.  A blank line in
  317. the middle of an entry in the `Permissions' file will not be ignored as
  318. it should be.  Dialer programs, as found in some versions of HDB, are
  319. not recognized directly.  If you must use a dialer program, rather than
  320. an entry in `Devices', you must use the `chat-program' command in a new
  321. style dialer file; see *Note dial File::.  You will have to invoke the
  322. dialer program via a shell script, since an exit code of 0 is required
  323. to recognize success.
  324.    The `uuconv' program can be used to convert from V2 or HDB
  325. configuration files to the new style (it can also do the reverse
  326. translation, if you are so inclined).  It will not do all of the work,
  327. and the results should be carefully checked, but it can be quite useful.
  328.    If you are installing a new system, you will, of course, have to
  329. write the configuration files; see *Note Configuration Files::.
  330.    You must also decide what sort of spool directory you want to use. 
  331. If you will only be using these programs, I recommend
  332. `SPOOLDIR_TAYLOR'; otherwise select the spool directory corresponding
  333. to your existing UUCP package.  The details of the spool directory
  334. choices are described at somewhat tedious length in `unix/spool.c'.
  335. File: uucp.info,  Node: Compilation,  Next: Testing,  Prev: Configuration,  Up: Overall Installation
  336. Compiling Taylor UUCP
  337. =====================
  338.   1. Take a look at the top of `Makefile.in' and set the appropriate
  339.      values for your system.  These control where the programs are
  340.      installed and which user on the system owns them (normally they
  341.      will be owned by a special user `uucp' rather than a real person;
  342.      they should probably not be owned by `root').
  343.   2. Run the shell script `configure'.  This script was generated using
  344.      the `autoconf' program written by David MacKenzie of the Free
  345.      Software Foundation.  It takes a while to run.  It will generate
  346.      the file `conf.h' based on `conf.h.in', and, for each source code
  347.      directory, will generate `Makefile' based on `Makefile.in'.
  348.      You can pass certain arguments to `configure' in the environment.
  349.      Because `configure' will compile little test programs to see what
  350.      is available on your system, you must tell it how to run your
  351.      compiler. It recognizes the following environment variables:
  352.     `CC'
  353.           The C compiler.  If this is not set, then if `configure' can
  354.           find `gcc' it will use it, otherwise it will use `cc'.
  355.     `CFLAGS'
  356.           Flags to pass to the C compiler when compiling the actual
  357.           code.  If this is not set, `configure' will use `-g'.
  358.     `LDFLAGS'
  359.           Flags to pass to the C compiler when only linking, not
  360.           compiling.  If this is not set, `configure' will use the
  361.           empty string.
  362.     `LIBS'
  363.           Libraries to pass to the C compiler.  If this is not set,
  364.           `configure' will use the empty string.
  365.     `INSTALL'
  366.           The program to run to install UUCP in the binary directory. 
  367.           If this is not set, then if `configure' finds the BSD
  368.           `install' program, it will set this to `install -c';
  369.           otherwise, it will use `cp'.
  370.     `INSTALLDATA'
  371.           The program to run to install UUCP data files, such as the
  372.           man pages and the info pages.  If this is not set, then if
  373.           `configure' finds the BSD `install' program, it will set this
  374.           to `install -c -m 644'; otherwise, it will use `cp'.
  375.      Suppose you want to set the environment variable `CC' to `rcc'. 
  376.      If you are using `sh' or `bash', invoke `configure' as `CC=rcc
  377.      configure'.  If you are using `csh', do `setenv CC rcc; sh
  378.      configure'.
  379.      On some systems you will want to use `LIBS=-lmalloc'.  On Xenix
  380.      derived versions of Unix do not use `LIBS=-lx' because this will
  381.      bring in the wrong versions of certain routines; if you want to use
  382.      `-lx' you must specify `LIBS=-lc -lx'.
  383.      If `configure' fails for some reason, or if you have a very wierd
  384.      system, you may have to configure the package by hand.  To do
  385.      this, copy the file `conf.h.in' to `conf.h' and edit it for your
  386.      system. Then for each source directory (the top directory, and the
  387.      subdirectories `lib', `unix', and `uuconf') copy `Makefile.in' to
  388.      `Makefile', find the words within `@' characters, and set them
  389.      correctly for your system.
  390.   3. Igor V. Semenyuk provided this (lightly edited) note about ISC
  391.      Unix 3.0. The `configure' script will default to passing `-posix'
  392.      to `gcc'.  However, using `-posix' changes the environment to
  393.      POSIX, and on ISC 3.0, at least, the default for POSIX_NO_TRUNC is
  394.      1. This means nothing for uucp, but can lead to a problem when
  395.      uuxqt executes rmail.  IDA sendmail has dbm configuration files
  396.      named `mailertable.{dir,pag}'.  Notice these names are 15
  397.      characters long.  When uuxqt compiled with `-posix' executes
  398.      rmail, which in turn executes sendmail, the later is run under
  399.      POSIX environment too! This leads to sendmail bombing out with
  400.      `'error opening 'M' database: name too long' (mailertable.dir)'. 
  401.      It's rather obscure behaviour, and it took me a day to find out
  402.      the cause.  I don't use `-posix', instead I run `gcc' with
  403.      `-D_POSIX_SOURCE', and add `-lcposix' to `LIBS'.
  404.   4. You should verify that `configure' worked correctly by checking
  405.      `conf.h' and the instances of `Makefile'.
  406.   5. Edit `policy.h' for your local system.  The comments should explain
  407.      the various choices.  The default values are intended to be
  408.      reasonable, so you may not have to make any changes.
  409.   6. Type `make' to compile everything.  The `tstuu.c' file is not
  410.      particularly portable; if you can't figure out how to compile it
  411.      you can safely ignore it, as it is only used for testing (to use
  412.      STREAMS pseudo-terminals, tstuu.c must be compiled with
  413.      `-DHAVE_STREAMS_PTYS'; this is not automatically determined at the
  414.      moment).  If you have any other problems there is probably a bug
  415.      in the `configure' script.
  416.   7. Please report any problems you have.  That is the only way they
  417.      will get fixed for other people.  Supply a patch if you can (*note
  418.      Patches::.), or just ask for help.
  419. File: uucp.info,  Node: Testing,  Next: Installation,  Prev: Compilation,  Up: Overall Installation
  420. Testing Taylor UUCP
  421. ===================
  422.    This package is in use at many sites, and has been running at
  423. `airs.com' for over a year.  However, it will doubtless fail in some
  424. situations.  Do not rely on this code until you have proven to yourself
  425. that it will work.
  426.    You can use the `uuchk' program to test your configuration files. It
  427. will read them and print out a verbose description.  This program
  428. should not be made setuid, because it will display passwords if it can
  429. read them.
  430.    If your system supports pseudo-terminals, and you compiled the code
  431. to support the new style of configuration files, you should be able to
  432. use the `tstuu' program to test the `uucico' daemon (if your system
  433. supports STREAMS based pseudo-terminals, you must compile tstuu.c with
  434. `-DHAVE_STREAMS_PTYS', at least at the moment; the STREAMS based code
  435. was contributed by Marc Boucher).
  436.    To run `tstuu', just type `tstuu' with no arguments while logged in
  437. to the compilation directory (since it runs `./uucp', `./uux' and
  438. `./uucico').  It will run a lengthy series of tests (it takes over ten
  439. minutes on a slow VAX).  You will need a fair amount of space available
  440. in `/usr/tmp'.  You will probably want to put it in the background.  Do
  441. not use `^Z', because the program traps on `SIGCHLD' and winds up
  442. dying.  It will create a directory `/usr/tmp/tstuu' and fill it with
  443. configuration files, and create spool directories
  444. `/usr/tmp/tstuu/spool1' and `/usr/tmp/tstuu/spool2'.
  445.    If your system does not support the `FIONREAD' call, the `tstuu'
  446. program will run very slowly.  This may or may not get fixed in a later
  447. version.
  448.    The `tstuu' program does not seem to work under SunOS 4.1.1.  This
  449. seems to be due to a bug in the implementation of ptys.
  450.    The program will finish with an execute file named `X.SOMETHING' and
  451. a data file named `D.SOMETHING' in the directory
  452. `/usr/tmp/tstuu/spool1' (or, more likely, in subdirectories, depending
  453. on the choice of `SPOOLDIR' in `policy.h').  Two log files will be
  454. created in the directory `/usr/tmp/tstuu'.  They will be named `Log1'
  455. and `Log2', or, if you have selected `HAVE_HDB_LOGGING' in `policy.h',
  456. `Log1/uucico/test2' and `Log2/uucico/test1'.  You can test `uuxqt' by
  457. running the command `./uuxqt -I /usr/tmp/tstuu/Config1'.  This should
  458. leave a command file `C.SOMETHING' and a data file `D.SOMETHING' in
  459. `/usr/tmp/tstuu/spool1' or in subdirectories.  Again, there should be
  460. no errors in the log file.
  461.    Assuming you compiled the code with debugging enabled, the `-x'
  462. switch can be used to set debugging modes; see the `debug' command for
  463. details (*note Debugging Levels::.).  Use `-x all' to turn on all
  464. debugging and generate far more output than you will ever want to see. 
  465. The `uucico' daemons will put debugging output in the files `Debug1'
  466. and `Debug2' in the directory `/usr/tmp/tstuu'. After that, you're
  467. pretty much on your own.
  468.    On some systems you can also use `tstuu' to test `uucico' against
  469. the system `uucico', by using the `-u' switch.  For this to work,
  470. change the definitions of `ZUUCICO_CMD' and `UUCICO_EXECL' at the top
  471. of `tstuu.c' to something appropriate for your system.  The definitions
  472. in `tstuu.c' are what I used for Ultrix 4.0, on which
  473. `/usr/lib/uucp/uucico' is particularly obstinate about being run as a
  474. child; I was only able to run it by creating a login name with no
  475. password whose shell was `/usr/lib/uucp/uucico'.  Calling login in this
  476. way will leave fake entries in `wtmp' and `utmp'; if you compile
  477. `tstout.c' (in the `contrib' directory) as a setuid `root' program,
  478. `tstuu' will run it to clear those entries out.  On most systems, such
  479. hackery should not be necessary, although on SCO I had to su to `root'
  480. (`uucp' might also have worked) before I could run
  481. `/usr/lib/uucp/uucico'.
  482.    You can test `uucp' and `uux' (give them the `-r' switch to keep
  483. them from starting `uucico') to make sure they create the right sorts
  484. of files.  Unfortunately, if you don't know what the right sorts of
  485. files are, I'm not going to tell you here.
  486.    If `tstuu' passes, or you can't run it for some reason or other,
  487. move on to testing with some other system.  Set up the configuration
  488. files (*note Configuration Files::.), or use an existing configuration.
  489. Tell `uucico' to dial out to the system by using the `-s' system switch
  490. (e.g.  `uucico -s uunet').  The log file should tell you what happens.
  491.    If you compiled the code with debugging enabled, you can use
  492. debugging mode to get a great deal of information about what sort of
  493. data is flowing back and forth; the various possibilities are described
  494. under the `debug' command (*note Debugging Levels::.).  When initially
  495. setting up a connection `-x chat' is probably the most useful (e.g.
  496. `uucico -s uunet -x chat'); you may also want to use `-x
  497. handshake,incoming,outgoing'.  You can use `-x' multiple times on one
  498. command line, or you can give it comma separated arguments as in the
  499. last example.  Use `-x all' to turn on all possible debugging
  500. information.  The debugging information is written to a file, normally
  501. `/usr/spool/uucp/Debug', although the default can be changed in
  502. `policy.h' and the configuration file can override the name with the
  503. `debugfile' command.  The debugging file may contain passwords and some
  504. file contents as they are transmitted over the line, so the debugging
  505. file is only readable by the `uucp' user.
  506.    You can use the `-f' switch to force `uucico' to call out even if
  507. the last call failed recently; using `-S' when naming a system has the
  508. same effect.  Otherwise the status file (in the `.Status' subdirectory
  509. of the main spool directory, normally `/usr/spool/uucp') will prevent
  510. too many attempts from occurring in rapid succession.
  511.    Again, please let me know about any problems you have and how you got
  512. around them.  If you do report a problem, please include the version
  513. number of the package you are using, and a sample of the debugging file
  514. showing the problem.  General questions such as "why doesn't uucico
  515. dial out" are impossible to answer without much more information.
  516. File: uucp.info,  Node: Installation,  Next: TCP,  Prev: Testing,  Up: Overall Installation
  517. Installing Taylor UUCP
  518. ======================
  519.    You can install the executable files by becoming `root' and typing
  520. `make install'.  Or you can look at what `make install' does and do it
  521. by hand.  It tries to preserve your old programs, if any, but it only
  522. does this the first time Taylor UUCP is installed (so that if you
  523. install several versions of Taylor UUCP, you can still go back to your
  524. original UUCP programs).  You can retrieve the original programs by
  525. typing `make uninstall'.
  526.    Simply installing the executable files is not enough, however.  You
  527. must also arrange for them to be used correctly.
  528. * Menu:
  529. * Running uucico::              Running uucico
  530. * Using UUCP for mail and news::  Using UUCP for mail and news.
  531. * Trimming UUCP Log Files::     Trimming UUCP Log Files
  532. File: uucp.info,  Node: Running uucico,  Next: Using UUCP for mail and news,  Prev: Installation,  Up: Installation
  533. Running uucico
  534. --------------
  535.    By default `uucp' and `uux' will automatically start up `uucico' to
  536. call another system whenever work is queued up. However, the call may
  537. fail, or there may be time restrictions which prevent the call at that
  538. time (perhaps because telephone rates are high) (*note When to
  539. Call::.).  Also, a remote system may have work queued up for your
  540. system, but may not be calling you for some reason (perhaps you have
  541. agreed that your system should always place the call).  To make sure
  542. that works get transferred between the systems withing a reasonable
  543. time period, you should arrange to periodically invoke `uucico'.
  544.    These periodic invocations are normally caused by entries in the
  545. `crontab' file.  The exact format of `crontab' files, and how new
  546. entries are added, varies from system to system; check your local
  547. documentation (try `man cron').
  548.    To attempt to call all systems with outstanding work, use the command
  549. `uucico -r1'.  To attempt to call a particular system, use the command
  550. `uucico -s SYSTEM'.
  551.    A common case is to want to try to call a system at a certain time,
  552. with periodic retries if the call fails.  A simple way to do this is to
  553. create an UUCP command file, known as a "poll file".  If a poll file
  554. exists for a system, then `uucico -r1' will place a call to it.  If the
  555. call succeeds, the poll file will be deleted.
  556.    The file can be easily created using the `touch' command.  The name
  557. of a poll file currently depends on the type of spool directory you are
  558. using, as set in `policy.h'.  If you are using `SPOOLDIR_TAYLOR' (the
  559. default), put something like this in your `crontab' file:
  560.      touch /usr/spool/uucp/SYS/C./C.A0000
  561.    In this example SYS is the system you wish to call, and
  562. `/usr/spool/uucp' is your UUCP spool directory. If you are using
  563. `SPOOLDIR_HDB', use
  564.      touch /usr/spool/uucp/SYS/C.SYSA0000
  565.    For example, I use the following crontab entries locally:
  566.      45 * * * * /bin/echo /usr/lib/uucp/uucico -r1 | /bin/su uucpa
  567.      40 4,10,15 * * * touch /usr/spool/uucp/uunet/C./C.A0000
  568.    Every hour, at 45 minutes past, this will check if there is any work
  569. to be done, and, if there is, will call the appropriate system.  Also,
  570. at 4:40am, 10:40am and 3:40pm this will create a poll file file for
  571. `uunet', forcing the next check to call `uunet'.
  572. File: uucp.info,  Node: Using UUCP for mail and news,  Next: Trimming UUCP Log Files,  Prev: Running uucico,  Up: Installation
  573. Using UUCP for mail and news.
  574. -----------------------------
  575.    Taylor UUCP does not include a mail package.  All Unix systems come
  576. with some sort of mail delivery agent, typically `sendmail' or `MMDF'. 
  577. Source code is available for some mail delivery agents, such as `IDA
  578. sendmail' and `smail'.
  579.    Taylor UUCP also does not include a news package.  The two major Unix
  580. news packages are `C-news' and `INN'.  Both are available in source
  581. code form.
  582.    Configuring and using mail delivery agents is a notoriously complex
  583. topic, and I will not be discussing it here.  Configuring news systems
  584. is usually simpler, but I will not be discussing that either.  I will
  585. merely describe the interactions between the mail and news systems and
  586. UUCP.
  587.    A mail or news system interacts with UUCP in two ways.
  588. * Menu:
  589. * Sending mail or news::        Sending mail or news via UUCP
  590. * Receiving mail or news::      Receiving mail or news via UUCP
  591. File: uucp.info,  Node: Sending mail or news,  Next: Receiving mail or news,  Prev: Using UUCP for mail and news,  Up: Using UUCP for mail and news
  592. Sending mail or news via UUCP
  593. .............................
  594.    When mail is to be sent from your machine to another machine via
  595. UUCP, the mail delivery agent will invoke `uux'.  It will generally run
  596. a command such as `uux - SYSTEM!rmail', where SYSTEM is the remote
  597. system to which the mail is being sent.  It may pass other options to
  598. `uux', such as `-r' or `-g'.
  599.    News also invokes `uux' in order to transfer articles to another
  600. system.  The only difference is that news will use `uux' to invoke
  601. `rnews' on the remote system, rather than `rmail'.
  602.    You should arrange for your mail and news systems to invoke the
  603. Taylor UUCP version of `uux' when sending mail via UUCP.  If you simply
  604. replace any existing version of `uux' with the Taylor UUCP version,
  605. this will probably happen automatically.  However, if both versions
  606. exist on your system, you will probably have to modify the mail and news
  607. configuration files in some way.
  608.    Actually, if both the system UUCP and Taylor UUCP are using the same
  609. spool directory format, the system `uux' will probably work fine with
  610. the Taylor `uucico' (the reverse is not the case: the Taylor `uux'
  611. requires the Taylor `uucico').  However, data transfer will be somewhat
  612. more efficient if the Taylor `uux' is used.
  613. File: uucp.info,  Node: Receiving mail or news,  Prev: Sending mail or news,  Up: Using UUCP for mail and news
  614. Receiving mail or news via UUCP
  615. ...............................
  616.    As noted in *Note Sending mail or news::, mail is sent by requesting
  617. a remote execution of `rmail'.  To receive mail, then, all that is
  618. necessary is for UUCP to invoke `rmail' itself.
  619.    Any mail delivery agent will provide an appropriate version of
  620. `rmail'; you must simply make sure that it is in the command path used
  621. by UUCP (it almost certainly already is).  The default command path is
  622. set in `policy.h', and it may be overridden for a particular system by
  623. the `command-path' command (*note Miscellaneous (sys)::.).
  624.    Similarly, for news UUCP must be able to invoke `rnews'.  Any news
  625. system will provide a version of `rnews', and you must ensure that is
  626. in a directory on the path that UUCP will search.
  627. File: uucp.info,  Node: Trimming UUCP Log Files,  Prev: Using UUCP for mail and news,  Up: Installation
  628. Trimming UUCP Log Files
  629. -----------------------
  630.    You should also periodically trim the log files, as they will
  631. otherwise continue to grow without limit.  The names of the log files
  632. are set in `policy.h', and may be overridden in the configuration file
  633. (*note config File::.).  By default they are are `/usr/spool/uucp/Log'
  634. and `/usr/spool/uucp/Stats'.
  635.    You may find the `savelog' program in the `contrib' directory may be
  636. of use.  There is a manual page for it in `contrib' as well.
  637. File: uucp.info,  Node: TCP,  Prev: Installation,  Up: Overall Installation
  638. TCP together with Taylor UUCP
  639. =============================
  640.    If your system has a Berkeley style socket library, or a System V
  641. style TLI interface library, you can compile the code to permit making
  642. connections over TCP.  Specifying that a system should be reached via
  643. TCP is easy, but nonobvious.
  644.    If you are using the new style configuration files, see *Note
  645. Configuration Files::.  Basically, you can just add the line `port type
  646. tcp' to the entry in the system configuration file.  By default UUCP
  647. will get the port number by looking up `uucp' in `/etc/services'; if
  648. `uucp' is not found, port 540 will be used.  You can set the port
  649. number to use with the command `port service XXX', where XXX can be
  650. either a number or a name to look up in `/etc/services'.  You can
  651. specify the address of the remote host with `address A.B.C'; if you
  652. don't give an address, the remote system name will be used.  You should
  653. give an explicit chat script for the system when you use TCP; the
  654. default chat script begins with a carriage return, which will not work
  655. with some UUCP TCP servers.
  656.    If you are using V2 configuration files, add a line like this to
  657. `L.sys':
  658.      SYS Any TCP uucp HOST.DOMAIN chat-script
  659.    This will make an entry for system SYS, to be called at any time,
  660. over TCP, using port number `uucp' (as found in `/etc/services'; this
  661. may be specified as a number), using remote host `HOST.DOMAIN', with
  662. some chat script.
  663.    If you are using HDB configuration files, add a line like this to
  664. Systems:
  665.      SYS Any TCP - HOST.DOMAIN chat-script
  666.    and a line like this to Devices:
  667.      TCP uucp - -
  668.    You only need one line in Devices regardless of how many systems you
  669. contact over TCP.  This will make an entry for system SYS, to be called
  670. at any time, over TCP, using port number `uucp' (as found in
  671. `/etc/services'; this may be specified as a number), using remote host
  672. `HOST.DOMAIN', with some chat script.
  673.    The `uucico' daemon can also be run as a TCP server.  To use the
  674. default port number, which is a reserved port, `uucico' must be invoked
  675. by root (or it must be set user ID to root, but I don't recommend doing
  676. that).
  677.    Basically, you must define a port, either using the port file (*note
  678. port File::.) if you are using the new configuration method or with an
  679. entry in Devices if you are using HDB; there is no way to define a port
  680. using V2.  If you are using HDB the port must be named `TCP'; a line as
  681. shown above will suffice.  You can then start `uucico' as `uucico -p
  682. TCP' (after the `-p', name the port; in HDB it must be `TCP').  This
  683. will wait for incoming connections, and fork off a child for each one. 
  684. Each connection will be prompted with `login:' and `Password:'; the
  685. results will be checked against the UUCP (not the system) password file
  686. (*note Configuration File Names::.).
  687.    Of course, you can get a similar effect by using the BSD `uucpd'
  688. program.
  689.    You can also have `inetd' start up `uucico' with the `-l' switch,
  690. which will cause it to prompt with `login:' and `Password:' and check
  691. the results against the UUCP (not the system) password file.  This may
  692. be used in place of `uucpd'.
  693. File: uucp.info,  Node: Configuration Files,  Next: Protocols,  Prev: Overall Installation,  Up: Top
  694. Taylor UUCP Configuration Files
  695. *******************************
  696.    This chapter describes the configuration files accepted by the Taylor
  697. UUCP package if compiled with `HAVE_TAYLOR_CONFIG' defined in
  698. `policy.h'.
  699.    The configuration files are normally found in the directory
  700. NEWCONFIGDIR, which is defined by the `Makefile' variable
  701. `newconfigdir'; by default NEWCONFIGDIR is `/usr/local/conf/uucp'. 
  702. However, the main configuration file, `config', is the only one which
  703. must be in that directory, since it may specify a different location
  704. for any or all of the other files.  You may run any of the UUCP
  705. programs with a different main configuration file by using the `-I'
  706. option; this can be useful when testing a new configuration.  When you
  707. use the `-I' option the programs will revoke any setuid privileges.
  708. * Menu:
  709. * Configuration File Format::   Configuration file format
  710. * Configuration Examples::      Examples of configuration files
  711. * Time Strings::                How to write time strings
  712. * Chat Scripts::                How to write chat scripts
  713. * config File::                 The main configuration file
  714. * sys File::                    The system configuration file
  715. * port File::                   The port configuration files
  716. * dial File::                   The dialer configuration files
  717. * Security::                    Security issues
  718. File: uucp.info,  Node: Configuration File Format,  Next: Configuration Examples,  Prev: Configuration Files,  Up: Configuration Files
  719. Configuration File Format
  720. =========================
  721.    All the configuration files follow a simple line-oriented `KEYWORD
  722. VALUE' format.  Empty lines are ignored, as are leading spaces; unlike
  723. HDB, lines with leading spaces are read.  The first word on each line
  724. is a keyword.  The rest of the line is interpreted according to the
  725. keyword.  Most keywords are followed by numbers, boolean values or
  726. simple strings with no embedded spaces.
  727.    The `#' character is used for comments.  Everything from a `#' to
  728. the end of the line is ignored unless the `#' is preceded by a `\'
  729. (backslash); if the `#' is preceeded by a `\', the `\' is removed but
  730. the `#' remains in the line.  This can be useful for a phone number
  731. containing a `#'.  To enter the sequence `\#', use `\\#'.
  732.    The backslash character may be used to continue lines.  If the last
  733. character in a line is a backslash, the backslash is removed and the
  734. line is continued by the next line.  The second line is attached to the
  735. first with no intervening characters; if you want any whitespace between
  736. the end of the first line and the start of the second line, you must
  737. insert it yourself.
  738.    However, the backslash is not a general quoting character.  For
  739. example, you cannot use it to get an embedded space in a string
  740. argument.
  741.    Everything after the keyword must be on the same line.  A BOOLEAN
  742. may be specified as `y', `Y', `t', or `T' for true and `n', `N', `f',
  743. or `F' for false; any trailing characters are ignored, so `true',
  744. `false', etc., are also acceptable.
  745. File: uucp.info,  Node: Configuration Examples,  Next: Time Strings,  Prev: Configuration File Format,  Up: Configuration Files
  746. Examples of Configuration Files
  747. ===============================
  748.    All the configuration commands are explained in the following
  749. sections. However, I'll start by giving a few examples of configuration
  750. files. For a more complete description of any of the commands used here
  751. see the appropriate section of this chapter.  There are also sample
  752. configuration files in the `sample' subdirectory of the distribution.
  753. * Menu:
  754. * config File Examples::        Examples of the main configuration file
  755. * Leaf Example::                Call a single remote site
  756. * Gateway Example::             The gateway for several local systems
  757. File: uucp.info,  Node: config File Examples,  Next: Leaf Example,  Prev: Configuration Examples,  Up: Configuration Examples
  758. config File Examples
  759. --------------------
  760.    To start with, here are some examples of uses of the main
  761. configuration file, `config'.  For a complete description of the
  762. commands that are permitted in `config', see *Note config File::.
  763.    In many cases you will not need to create a `config' file at all.
  764. The most common reason to create one is to give your machine a special
  765. UUCP name.  Other reasons might be to change the UUCP spool directory or
  766. to permit any remote system to call in.
  767.    If you have an internal network of machines, then it is likely that
  768. the internal name of your UUCP machine is not the name you want to use
  769. when calling other systems.  For example, here at `airs.com' our
  770. mail/news gateway machine is named `elmer.airs.com' (it is one of
  771. several machines all named `LOCALNAME.airs.com').  If we did not
  772. provide a `config' file, then our UUCP name would be `elmer'; however,
  773. we actually want it to be `airs'. Therefore, we use the following line
  774. in `config':
  775.      nodename airs
  776.    The UUCP spool directory name is set in `policy.h' when the code is
  777. compiled.  You might at some point decide that it is appropriate to move
  778. the spool directory, perhaps to put it on a different disk partition.
  779. You would use the following commands in `config' to change to
  780. directories on the partition `/uucp':
  781.      spool /uucp/spool
  782.      pubdir /uucp/uucppublic
  783.      logfile /uucp/spool/Log
  784.      debugfile /uucp/spool/Debug
  785.    You would then move the contents of the current spool directory to
  786. `/uucp/spool'.  If you do this, make sure that no UUCP processes are
  787. running while you change `config' and move the spool directory.
  788.    Suppose you wanted to permit any system to call in to your system and
  789. request files.  This is generally known as "anonymous UUCP", since the
  790. systems which call in are effectively anonymous.  By default, unknown
  791. systems are not permitted to call in.  To permit this you must use the
  792. `unknown' command in `config'.  The `unknown' command is followed by
  793. any command that may appear in the system file; for full details, see
  794. *Note sys File::.
  795.    I will show two possible anonymous UUCP configurations.  The first
  796. will let any system call in and download files, but will not permit
  797. them to upload files to your system.
  798.      # No files may be transferred to this system
  799.      unknown receive-request no
  800.      # The public directory is /usr/spool/anonymous
  801.      unknown pubdir /usr/spool/anonymous
  802.      # Only files in the public directory may be sent (the default anyhow)
  803.      unknown remote-send ~
  804. Setting the public directory is convenient for the systems which call
  805. in.  It permits to request a file by prefixing it with `~/'.  For
  806. example, assuming your system is known as `server', then to retrieve
  807. the file `/usr/spool/anonymous/INDEX' a user on a remote site could
  808. just enter `uucp server!~/INDEX ~'; this would transfer `INDEX' from
  809. `server''s public directory to the user's local public directory.  Note
  810. that when using `csh' or `bash' the `!' and the second `~' must be
  811. quoted.
  812.    The next example will permit remote systems to upload files to a
  813. special directory named `/usr/spool/anonymous/upload'.  Permitting a
  814. remote system to upload files permits it to send work requests as well;
  815. this example is careful to prohibit commands from unknown systems.
  816.      # No commands may be executed (the list of permitted commands is empty)
  817.      unknown commands
  818.      # The public directory is /usr/spool/anonymous
  819.      unknown pubdir /usr/spool/anonymous
  820.      # Only files in the public directory may be sent; users may not download
  821.      # files from the upload directory
  822.      unknown remote-send ~ !~/upload
  823.      # May only upload files into /usr/spool/anonymous/upload
  824.      unknown remote-receive ~/upload
  825.